home *** CD-ROM | disk | FTP | other *** search
Wrap
package javax.crypto; import java.nio.ByteBuffer; import java.security.AlgorithmParameters; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.ProviderException; import java.security.SecureRandom; import java.security.spec.AlgorithmParameterSpec; public abstract class CipherSpi { protected abstract void engineSetMode(String var1) throws NoSuchAlgorithmException; protected abstract void engineSetPadding(String var1) throws NoSuchPaddingException; protected abstract int engineGetBlockSize(); protected abstract int engineGetOutputSize(int var1); protected abstract byte[] engineGetIV(); protected abstract AlgorithmParameters engineGetParameters(); protected abstract void engineInit(int var1, Key var2, SecureRandom var3) throws InvalidKeyException; protected abstract void engineInit(int var1, Key var2, AlgorithmParameterSpec var3, SecureRandom var4) throws InvalidKeyException, InvalidAlgorithmParameterException; protected abstract void engineInit(int var1, Key var2, AlgorithmParameters var3, SecureRandom var4) throws InvalidKeyException, InvalidAlgorithmParameterException; protected abstract byte[] engineUpdate(byte[] var1, int var2, int var3); protected abstract int engineUpdate(byte[] var1, int var2, int var3, byte[] var4, int var5) throws ShortBufferException; protected int engineUpdate(ByteBuffer var1, ByteBuffer var2) throws ShortBufferException { try { return this.method_1(var1, var2, true); } catch (IllegalBlockSizeException var4) { throw new ProviderException("Internal error in update()"); } catch (BadPaddingException var5) { throw new ProviderException("Internal error in update()"); } } protected abstract byte[] engineDoFinal(byte[] var1, int var2, int var3) throws IllegalBlockSizeException, BadPaddingException; protected abstract int engineDoFinal(byte[] var1, int var2, int var3, byte[] var4, int var5) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException; protected int engineDoFinal(ByteBuffer var1, ByteBuffer var2) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException { return this.method_1(var1, var2, false); } // $FF: renamed from: a (int) int static int method_0(int var0) { return Math.min(4096, var0); } // $FF: renamed from: a (java.nio.ByteBuffer, java.nio.ByteBuffer, boolean) int private int method_1(ByteBuffer var1, ByteBuffer var2, boolean var3) throws ShortBufferException, IllegalBlockSizeException, BadPaddingException { if (var1 != null && var2 != null) { int var4 = var1.position(); int var5 = var1.limit(); int var6 = var5 - var4; if (var3 && var6 == 0) { return 0; } else { int var7 = this.engineGetOutputSize(var6); if (var2.remaining() < var7) { throw new ShortBufferException("Need at least " + var7 + " bytes of space in output buffer"); } else { boolean var8 = var1.hasArray(); boolean var9 = var2.hasArray(); if (var8 && var9) { byte[] var21 = var1.array(); int var23 = var1.arrayOffset() + var4; byte[] var25 = var2.array(); int var27 = var2.position(); int var29 = var2.arrayOffset() + var27; int var31; if (var3) { var31 = this.engineUpdate(var21, var23, var6, var25, var29); } else { var31 = this.engineDoFinal(var21, var23, var6, var25, var29); } var1.position(var5); var2.position(var27 + var31); return var31; } else if (!var8 && var9) { int var20 = var2.position(); byte[] var22 = var2.array(); int var24 = var2.arrayOffset() + var20; byte[] var26 = new byte[method_0(var6)]; int var28; int var30; for(var28 = 0; var6 > 0; var6 -= var30) { var30 = Math.min(var6, var26.length); var1.get(var26, 0, var30); int var32; if (!var3 && var6 == var30) { var32 = this.engineDoFinal(var26, 0, var30, var22, var24); } else { var32 = this.engineUpdate(var26, 0, var30, var22, var24); } var28 += var32; var24 += var32; } var2.position(var20 + var28); return var28; } else { byte[] var10; int var11; if (var8) { var10 = var1.array(); var11 = var1.arrayOffset() + var4; } else { var10 = new byte[method_0(var6)]; var11 = 0; } byte[] var12 = new byte[method_0(var7)]; int var13 = var12.length; int var14 = 0; boolean var15 = false; while(var6 > 0) { int var16 = Math.min(var6, var13); if (!var8 && !var15) { var1.get(var10, 0, var16); var11 = 0; } try { int var17; if (!var3 && var6 == var16) { var17 = this.engineDoFinal(var10, var11, var16, var12, 0); } else { var17 = this.engineUpdate(var10, var11, var16, var12, 0); } var15 = false; var11 += var16; var6 -= var16; var2.put(var12, 0, var17); var14 += var17; } catch (ShortBufferException var19) { if (var15) { throw (ProviderException)(new ProviderException("Could not determine buffer size")).initCause(var19); } var15 = true; int var18 = this.engineGetOutputSize(var16); var12 = new byte[var18]; } } var1.position(var5); return var14; } } } } else { throw new NullPointerException("Input and output buffers must not be null"); } } protected byte[] engineWrap(Key var1) throws IllegalBlockSizeException, InvalidKeyException { throw new UnsupportedOperationException(); } protected Key engineUnwrap(byte[] var1, String var2, int var3) throws InvalidKeyException, NoSuchAlgorithmException { throw new UnsupportedOperationException(); } protected int engineGetKeySize(Key var1) throws InvalidKeyException { throw new UnsupportedOperationException(); } }